package edu.friday.controller;

import edu.friday.common.result.RestResult;
import edu.friday.model.User;
import edu.friday.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 查询用户列表
     * @param username 可选用户名参数
     * @param major 可选专业参数
     * @return 用户列表
     */
    @GetMapping("/list")
    public List<User> listUsers(
            @RequestParam(required = false) String username,
            @RequestParam(required = false) String major) {

        if (username != null || major != null) {
            // 有参数查询
            return userService.findByCriteria(username, major);
        } else {
            // 无参数查询所有用户
            return userService.findAllUsers();
        }
    }

    /**
     * 新增用户
     * @param user 用户对象
     * @return 操作结果
     */
    @PostMapping("/add")
    public RestResult addUser(@RequestBody User user) {
        // 校验用户名是否已存在
        if (userService.usernameExists(user.getUsername())) {
            return RestResult.error("用户名已存在");
        }

        // 保存用户
        User savedUser = userService.saveUser(user);
        return RestResult.success("用户添加成功", savedUser);
    }

    /**
     * 修改用户信息
     * @param user 用户对象(包含ID和需要更新的字段)
     * @return 操作结果
     */
    @PutMapping("/edit")
    public RestResult editUser(@RequestBody User user) {
        if (user.getId() == null) {
            return RestResult.error("用户ID不能为空");
        }
        return userService.updateUser(user);
    }

    /**
     * 删除用户
     * @param id 用户ID
     * @return 操作结果
     */
    @DeleteMapping("/delete/{id}")
    public RestResult deleteUser(@PathVariable Integer id) {
        return userService.deleteUser(id);
    }
}